Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Solución de ecuaciones no lineales. Programación numérica (página 2)




Enviado por Pablo Turmero



Partes: 1, 2

Monografias.com

Ejemplo
Función de ejemplo

Función en C:
double f(x){
return sqrt(x*x + 1) – tan(x);
}

Monografias.com

Tarea
Haga funciones en C para encontrar la solución de las siguientes ecuaciones utilizando la función biseccion():
1. ex – x2 + 3x – 2 = 0 para 0 < = x < = 1

2.

Monografias.com

Error en el método de bisección
Para el método de bisección se sabe que la raíz esta dentro del intervalo, la raíz debe situarse dentro de ?Dx / 2, donde Dx = xb – xa.
La solución en este caso es igual al punto medio del intervalo
xr = (xb + xa) / 2
Deberá expresarse por
xr = (xb + xa) / 2 ? Dx / 2

Error aproximado
sustituyedo

Monografias.com

Número de iteraciones
El error absoluto en la primera iteración es:
El error absoluto en la iteración n-ésima es:
Si el error deseado es Ead,El número de iteraciones será:

Monografias.com

Volumen del abrevadero
h
r
L
r
h
a
b

Monografias.com

Tarea
17. Un abrevadero de longitud L tiene una sección transversal en forma de semicírculo con radio r (véase la figura) Cuando se llena de agua hasta una distancia h de la parte superior, el volumen V de agua es
V = L [ 0.5 pr2 – r2 arcsen(h/r) – h(r2 – h2)1/2 ]
Escriba un programa en C amigable para el usuario que lea los datos de este problema y encuentre la profundidad h del abrevadero. Utilice el método de bisección para encontrar la solución.
h
r
L

Monografias.com

Resumen
Requiere que se conozca el intervalo en donde está la raíz.
Los valores de la función en los extremos deben tener signos diferentes.
Converge lentamente, a cada paso el intervalo se divide en 2.

Monografias.com

Método de falsa posición
xl
xu
f(xl)
f(xu)
xr
Este método considera cual límite del intervalo está más próximo a la raíz.
De la figura
Despejando
f(xr)

Monografias.com

Ejemplo en Excel
Encontrar la raíz de:

Monografias.com

Tarea
Encuentre la raíz real de f(x) = (0.8 – 0.3x)/x, por el método de falsa posición. Utilice valores iniciales de 1 y 3, calcule el error porcentual verdadero en cada iteración. Encuentre la raíz analiticamente.

Monografias.com

Falsa posición en C
double falsaPosicion(double xl,
double xu, double ee, int imax){
double error,fl,fu,fr,xr,xrOld;
int iter=0,il=0,iu=0;
fl = f(xl);
fu = f(xu);
do{
xrOld = xr;
xr = xu – fu*(xl-xu)/(fl-fu);
fr = f(xr);
iter++;
if(xr!= 0)
error=fabs((xr-xrOld)/xr*100);

if(fl*fr< 0){
xu = xr;
fu = f(xu);
iu = 0;
il++;
if(il>=2)
fl/=2;
}
else{
xl = xr;
fl = f(xl);
il = 0;
iu++;
if(iu>=2)
fu/=2;
else;
error = 0;
}
}while(error>ee && iter< =imax);
return xr;
}

Monografias.com

Iteración de punto fijo
Un punto fijo de una función g(x) es un número p tal que g(p) = p.
Dado un problema f(x) = 0, se puede definir una función g(x) con un punto fijo en p de diferentes maneras. Por ejemplo g(x) = x – f(x).

Monografias.com

Teorema
Si g ? C [a, b] y g(x) ? C [a, b] para toda x ? C [a, b], entonces g tiene un punto fijo en [a, b].
Si además g'(x) existe en (a, b) y una constante positiva k< 1 existe con
|g'(x)| < = k, pata toda x ? (a, b),
Entonces el punto fijo en [a, b] es único.
y = g(x)
y
a
b
a
b
p
p=g(p)
x
y = x
y = g(x)
y
a
b
a
b
p
p=g(p)
x
y = x
|g'(x)>1
|g'(x)< =1

Monografias.com

Algoritmo de punto fijo
Obtener una solución a p = g(p) dada un aproxiamción inicial p0.
ENTRADA aproximación inicial p0; tolerancia TOL; número máximo de iteraciones N0.
1. Tome i = 1.2. Mientras i < = N0 hacer 3. p = g(p0) 4. Si |p – p0| < TOL entonces5. Regresar p6. i = i +17. p0 = p8. Fin mientras9. Imprime 'El procedimiento fracasó después de N0 iteraciones'

Monografias.com

Gráfica del algoritmo de punto fijo
y = g(x)
y
x
y = x
p0
p1= g(p0)
p3
p2
p1
p2= g(p1)
p3= g(p2)
y = g(x)
y
x
y = x
p0
p1= g(p0)
p2
p1
p2= g(p1)
p3= g(p2)

Monografias.com

Casos de no convergencia
y = g(x)
y
x
y = x
y = g(x)
y
x
y = x

Monografias.com

Ejemplo
Sea la función: x3 + 4×2 -10 = 0 tiene una raíz en [1, 2]
Puede despejarse en:
a. x = g1(x) = x – x3 – 4×2 +10
b. x = g2(x) = ½(10 – x3)½
c. x = g3(x) = (10/(4 + x))½
d. x = g4(x) = x – (x3 + 4×2 – 10)/(3×2 + 8x)

Monografias.com

Iteraciones de punto fijo
(b)
1.51.2869537671.4025408031.3454583741.3751702521.3600941921.3678469671.3638870031.3659167331.3648782171.3654100611.3651378201.3652772081.3652058501.3652423831.3652295781.3652300281.365230012
(c)
1.51.3483997241.3673763711.3649570151.3652647481.3652255941.3652305751.3652299411.3652300221.3652300121.3652300131.365230013
(a)
1 1.52 -0.8753 6.7324218754 -469.720012005 1.02754555E86 -1.084933870E247 1.277055591E728 -2.082712908E2169 NaN101112131415202530
(d)
1.51.3733333331.365262014 1.3652300131.365230013

Monografias.com

Funciones graficadas en MathLab
a)
b)
c)
d)

Monografias.com

Teorema de punto fijo
Si g ? C [a, b] y g(x) ? C [a, b] para toda x ? C [a, b], además supongamos que existe g'(x) en (a, b) y una constante positiva k< 1 cuando
|g'(x)| < = k, pata toda x ? (a, b),
Entonces, para cualquier punto p0 en [a, b] la sucesión definida por
pn = g(pn-1), n >=1
Converge en el único punto fijo p en [a, b].

Monografias.com

Corolario
Si g satisface las hipótesis de teorema del punto fijo, las cotas de error que supone utilizar pn para aproximar a p están dadas por
| pn – p| < = kn max(p0 – a, b – p0)
Y por
| pn – p| < = kn | p1 – p0|/ (1 – k), para toda n>=1

Monografias.com

Análisis del ejemplo
Caso (a)
g1(x) = x – x3 – 4×2 +10
g1'(x) = 1 – 3×2 – 8x
g1'(1) = – 11, g1'(2) = – 28
No se cumple |g1'(x)| < 1
Caso (b)
g2(x) = ½(10 – x3)½
g2'(x) = – 3/4×2(10 – x3)-½
g2'(1) = – 0.25, g1'(2) = – 2.1213
No se cumple |g1'(x)| < 1
Caso (c)
g3(x) = (10/(4 + x))½
g3'(x) = (- 5/3.16)(4 + x)-1.5
< = (- 5/3.16)(5)-1.5 < = 0.15
Para toda x en [1, 2]
Caso (d)
g4(x) = x – (x3 + 4×2 – 10)/(3×2 + 8x)
Se cumple |g4'(x)| es aún menor que en el caso (c) para toda x en [1, 2]

Monografias.com

Programa en Matlab
function y = PuntoFijo(f_name, p0, tol, ni)
%f_name – nombre de la funcion
%p0 – valor inicial de la raiz
%tol – tolerancia
%ni – número de iteraciones
i = 1;
while i< =ni
p = feval(f_name,p0);
if(abs(p0-p)< tol)
y = p;
break;
end
i = i + 1;
p0 = p;
end
fprintf('No se encontro solucion.');

Monografias.com

Función en C
double PuntoFijo(double p0, double tol, int ni){
int i = 1;
double p;
while(i< =ni){
p = f(p0);
if(fabs((p0-p)/p)< tol)
return p;
i++;
p0 = p;
}
std::cout < < "NO solucion en :" < < ni < < " iteraciones.n";
return p;
}

Monografias.com

Tarea
Encontrar la raíz más grande de

f(x) = 2×3 – 11.7×2 + 17.7x – 5

Resolver por el método del punto fijo partiendo de x = 3.

Monografias.com

Método de Newton-Raphson
f (xn)
Pendiente = f ' (xn)
xn
xn+1
La ecuación de la recta tangente es:
y – f(xn) = f ' (xn)(x – xn)
Cuando y = 0, x = xn+1 o sea
0 – f(xn) = f ' (xn)(xn+1- xn)
o
f(x)

Monografias.com

Algoritmo Newton
Para obtener una solución a f(x) = 0 dada una aproximación p0.
ENTRADA aproximación inicial p0; tolerancia tol; número máximo de iteraciones N0.
1. i = 1
2. Mientras i< =N0 hacer
2.1. p = p0 – f(p0)/f'(p0)
2.2. Si |p – p0|< tol entonces regrese p
2.3. i = i + 1
2.4. p0 = p
3. fracaso en encontrar la raíz en N0 iteraciones

Monografias.com

Ejemplo
f(x) = x – cos(x) f'(x) = 1 + sen(x)
Tomando p0 = 0, se obtiene
pn f(pn) f'(pn) pn+10 -1 1 11 0.459698 1.8414 0.75036390.7503639 0.0189 1.6819 0.73911280.7391128 0.00005 1.6736 0.7390851 0.7390851 3E-10 1.6736 0.7390851
pn+1 = pn – (pn – cos(pn))/(1 + sen(pn))

Monografias.com

Ejercicio
Encontrar la solución de
x3 + 4×2 – 10 = 0
En el intervalo [1, 2] con el método de Newton

Monografias.com

Código en C
double Newton(double x0, double ee, int ni){
int i = 0;
double x,fx,dfx;
while(i< ni){
fx = f(x0);
dfx = df(x0);
x = x0-fx/dfx;
if(fabs((x-x0)/x)< ee)
return x;
i++;
x0 = x;
}
std::cout < < "No solución en "< < i < < " pasosn";
return x;
}

Monografias.com

Ejemplo: cuenta de ahorros
El valor acumulado de una cuenta de ahorros puede calcularse con la ecuación de anualidad vencida

A = P[(1 + i )n – 1 ] / i

En esta ecuación A es el monto de la cuenta, P es la cantidad que se deposita periódicamente e i es la tasa de interés por periodo para los n periodos de depósito. A un ingeniero le gustaría tener una cuenta de ahorros con un monto de $ 750,000 dólares al momento de retirarse dentro de 20 años, y puede depositar $ 1,500 dólares mensuales para lograr dicho objetivo. ¿Cuál es la mínima tasa de interés a que puede invertirse ese dinero, suponiendo que es un interés compuesto mensual?

Escriba un programa en C para este problema, el programa deberá pedir todos los datos necesarios y utilizar el método de Newton para calcular el interés a que debe invertirse el dinero.

Monografias.com

Solución
Para estimar el valor inicial de i podemos desarrollar el binomio (1 + i)n para aproximarlo a la segunda potencia. El resultado es
Se sugiere validar los datos de entrada. El capital a obtener debe ser mayor que el depósito por el número de abonos, es decir
A > nP

Monografias.com

Ejemplos resuelto en Excel

Monografias.com

Método alternativo para evaluar la derivada (método de la secante)
Es posible calcular la derivada en xn usando:
O utilizando

Monografias.com

Algoritmo Newton2
Para obtener una solución a f(x) = 0 dada una aproximación p0.
ENTRADA aproximación inicial p0; tolerancia tol; número máximo de iteraciones N0.
1. i = 12. h = 0.0013. Mientras i< =N0 hacer 2.1. y = f(p0) 2.2. y_deriv =(f(p0+h)-y)/h 2.3. p = p0 – y/y_deriv 2.4. Si |p – p0|< tol entonces regrese p 2.5. i = i + 1 2.6. p0 = p3. fracaso en encontrar la raíz en N0 iteraciones

Monografias.com

Código en C
double Newton(double x0, double ee, int ni){
int i = 0;
double x,fx,dfx,h;
h = 0.0001;
while(i< ni){
fx = f(x0);
dfx = (f(x0+h)-fx)/h;
x = x0-fx/dfx;
if(fabs((x-x0)/x)< ee)
return x;
i++;
x0 = x;
}
std::cout < < "No solución en "< < i < < " pasosn";
return x;
}

Monografias.com

Programa en Matlab
function x = Newt_n(f_name, xO)
% Iteración de Newton sin gráficos
x = xO; xb = x-999;
n=0; del_x = 0.01;
while abs(x-xb)>0.000001
n=n+1; xb=x ;
if n>300 break; end
y=feval(f_name, x) ;
y_driv=(feval(f_name, x+del_x) – y)/del_x;
x = xb – y/y_driv ;
fprintf(' n=%3.0f, x=%12.5e, y=%12.5e, ', n,x,y)
fprintf(' yd = %12.5e n', y_driv)
end
fprintf('n Respuesta final = %12.6en', x) ;
Calcula derivada con incrementos

Monografias.com

Raíz cuadrada con Newton
Para extraer la raíz cuadrada de un número se puede resolver la ecuación
f(x) = x2 – c = 0
La derivada es
f'(x) = 2x
La fórmula de recurrencia de Newton es
xn+1 = xn – (xn2 – c)/(2xn)
= xn/2 + c/(2xn)
= (xn + c/xn)/2
Ejemplo: raíz cuadrada de 5 con x0 = 1.

Monografias.com

Desventajas
En algunos casos la convergencia es muy lenta, considere
f(x) = xn – 1
Se obtiene la siguiente secuencia empezando en x = 0.5
iteración x0 0.51 51.652 46.4853 41.83654 37,65285
..
— 1.000000

Monografias.com

Desventajas (cont.)
x0
x1
x2
x
f(x)
x0
x1
x2
x
f(x)
x0
x1
x
f(x)
raíz cerca de punto de inflexión
mínimo local
varias raíces
x
f(x)
la iteración en un mínimo
x0
x1

Monografias.com

Ejemplo
Resolver utilizando Excel
sen x  – e-x = 0 para 0< = x < = 1 y 3< = x < = 4 y 6< = x < = 7

Monografias.com

Resultados

Monografias.com

Tarea #14
La carga en un circuito RLC serie esta dada por
suponga q/q0 = 0.01, t = 0.05 s, L = 5H y C = 10-6 F.
Encuentre el valor de la Resistencia R usando el método de Newton. Haga un programa en C para este problema.

Monografias.com

Ejemplo
La carga en un circuito RLC paralelo la impedancia esta dada por
suponga R = 225, L = 0.5H y C = 0.610-6 F y Z = 75 Ohms.
Encuentre el valor de la frecuencia w usando el método de Newton.

Monografias.com

Convergencia en el punto fijo
El algoritmo de punto fijo es de tipo lineal. Se puede demostrar que el error verdadero en la iteración i+1 es:
Et,i+1= g'(x)Et,i
donde
Et,i = xr – xi

Monografias.com

Convergencia en Newton Raphson
El algoritmo de Newton es de tipo cuadrático. Se puede demostrar que el error verdadero en la iteración i+1 es:
Et,i+1= (- f ''(xr)/2f '(xr))E2t,i
Esto significa que el número de decimales exactos se duplica con cada iteración.

Monografias.com

Raíces múltiples
En el caso de que un polinomio tenga raíces múltiples, la función tendrá pendiente igual a cero cuando cruce el eje x.
Tales casos no pueden detectarse en el método de bisección si la multiplicidad es par.
En el método de Newton la derivada en la raíz es cero.
Generalmente el valor de la función tiende a cero más rápido que la derivada y puede utilizarse el método de Newton

Monografias.com

Ejemplo
Polinomio: f(x) = (x – 3) (x – 1) (x – 1)

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter